In the computing industry, it is quite common to transfer data and commands between a plurality of data processing devices, such as for example, computers, printers, memories and the like, across a system or data bus. The usual bus architecture includes both a parallel and serial bus which interconnects data processing units and peripheral devices to permit the exchange of data and messages at high speed.
In a bus architecture where more than one device can control the bus or gain ownership, a mechanism must exist to decide which device is permitted ownership of the bus at any particular time. Most often, a scheme known as "arbitration" is used to determine which device will be the next bus owner. The decision as to who will be the next bus owner among the different devices is made on the basis of priority which is reflected in the "arbitration number" used by the particular device. That is, in an arbitration scheme, each device is assigned a priority number which determines when that device will become the next bus owner.
The typical arbitration scheme can be applied to a computer system containing a system bus coupled to an input/output (IO) bus wherein both buses operate at the same speed. In such a case, the devices on both the system bus and the IO bus request control of the bus to transfer data to devices on the other bus. Control of the bus is granted according to the device's respective priority numbers. IO devices generally have the highest priorities. Once the bus grant is received by the requesting device, the device typically sends an acknowledge signal to indicate that it has been granted control of the bus and is asserting that control. When another device requests use of the bus, the arbitration mechanism negates the bus grant to the device currently using the bus and grants control of the bus to the requesting device.
The arbitration process is continually being run. With each new arbitration, a new bus grant must be asserted. System bus devices request ownership of the bus more often than IO devices. When a particular system device has completed using the bus and no other device requests ownership, the system bus device will have to request the bus again, go through arbitration, and be asserted another bus grant before being able to own the bus again. Since system bus devices are constantly requesting ownership of the bus, the rearbitration process adds delays to the computer system. A need exists to eliminate these delays.
The prior art has allowed devices the ability to "park" on the bus and retain control until they have accomplished their tasks. However, IO devices have the highest priority and their bus accesses often involve real-time transfer of data. If a system device is allowed to park on the bus, an IO device must wait until the system bus has completed its task. These delays hurt system performance.
When the buses operate at different speeds other problems arise. The arbitration must occur at the speed of one of the buses, typically the faster system bus. Thus, the bus requests from devices on the slower IO bus must be synchronized to the speed of the arbitration mechanism. Also any bus grants to devices on the slower IO bus must be synchronized to the speed of the slower IO bus. Due to the time delay associated with synchronizing, it is possible to have two bus grants asserted simultaneously. This can occur where a system device requests and is granted control of the bus and subsequently an IO device requests and is given a bus grant. Due to the synchronization delay, the IO device may assert control of the bus before seeing the system bus has control of the bus, and, thus, the IO device may take the bus.
The present invention eliminates any possibility of concurrent bus grants. Furthermore, system devices can retain ownership of the bus even when not using it, but IO devices have the power to take control of the bus when a system bus is using the bus.